/**
 * 参考资料：
 * [Qt播放PCM音频（裸流）文件的两种方法](https://blog.csdn.net/caoshangpa/article/details/51224678)
 * [QT 用QAudio语音库实现音频信号的采集 以及发送到另一台电脑 播放](https://blog.csdn.net/hanzhen7541/article/details/98794555)
 * [windows下使用FFmpeg生成PCM音频文件并播放（通过命令的方式）](https://blog.csdn.net/u014552102/article/details/82734278)
 *
 * 注意事项：
 * Only can run in Qt5.15.2, have bug in Qt6.2.1、 Qt6.1.3 and Qt6.0.4
 *
 * 生成pcm文件：
 * ffmpeg -i roar.wav -acodec pcm_s16le -f s16le -ac 2 -ar 44100 001_pcm_audio_play.pcm
 * 生成并截取片段：
 * ffmpeg -i roar.wav -ss 00:00:00 -t 00:00:03 -acodec pcm_s16le -f s16le -ac 2 -ar 44100 002_pcm_audio_play.pcm
 * 播放pcm文件测试
 * ffplay -ar 44100 -ac 2 -f s16le -i output.pcm
 */

#include "widget.h"

#include <QApplication>
#include <QFile>
#include <QAudioFormat>
#include <QAudioOutput>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    QFile inputFile;
    inputFile.setFileName("../002_pcm_audio_play/002_pcm_audio_play.pcm");
    inputFile.open(QIODevice::ReadOnly);

    // 设置采样格式
    QAudioFormat audioFormat;
    // 设置采样率
    audioFormat.setSampleRate(44100);
    // 设置通道数
    audioFormat.setChannelCount(2);
    // 设置采样大小，一般为8位或16位
    audioFormat.setSampleSize(16);
    // 设置编码方式
    audioFormat.setCodec("audio/pcm");
    // 设置字节序
    audioFormat.setByteOrder(QAudioFormat::LittleEndian);
    // 设置样本数据类型
    audioFormat.setSampleType(QAudioFormat::UnSignedInt);

    QAudioOutput *audio = new QAudioOutput(audioFormat, 0);

    audio->start(&inputFile);


    return a.exec();
}
